using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Gratamira.CapaNegocio;

namespace Gratamira.Presentacion
{
    public partial class frmMaeGrupo : frmBaseMaestra, IBaseMaestra
    {
        private Grupo mGrupo;
        //Adicionar variable de fuente de enlace
        private BindingSource fuenteEnlace = new BindingSource();

        #region Constructores
        public frmMaeGrupo(string pGrupoID, estadoPantalla pModoPantalla)
        {
            InitializeComponent();
            llenarListasUnidades();
            if (pModoPantalla != estadoPantalla.Insertar)
            {
                mGrupo = new Grupo(pGrupoID);
            }
            else
            {
                mGrupo = new Grupo();
            }
            base.Estado = pModoPantalla;
            this.Text = Usuario.Empresa + " - Maestra de Grupo";
        }
        #endregion

        private void llenarListasUnidades()
        {
            Unidad u = new Unidad();
            ddlUnidadCompra.DataSource = u.leerTodasUnidades();
            ddlUnidadCompra.DisplayMember = "UnidadID";
            ddlUnidadCompra.ValueMember = "UnidadID";
            ddlUnidadCompra.SelectedIndex = 0;
            ddlUnidadManejo.DataSource = ddlUnidadCompra.DataSource;
            ddlUnidadManejo.DisplayMember = "UnidadID";
            ddlUnidadManejo.ValueMember = "UnidadID";
            ddlUnidadManejo.SelectedIndex = 0;
        }

        public override void deshabilitarControles()
        {
            //No permite modificar el contenido de los controles
            txtCodigoGrupo.Enabled = false;
            txtNombre.Enabled = false;
            txtCosto.Enabled = false;
            txtPrecio1.Enabled = false;
            txtPrecio2.Enabled = false;
            uchkGrupal.Enabled = false;
            ddlUnidadCompra.Enabled = false;
            ddlUnidadManejo.Enabled = false;
        }

        public override void habilitarControles()
        {
            //Permite modificar el contenido de los controles
            if (base.Estado == estadoPantalla.Insertar)
            {
                txtCodigoGrupo.Enabled = true;
            }
            txtNombre.Enabled = true;
            uchkGrupal.Enabled = true;
            txtCosto.Enabled = true;
            txtPrecio1.Enabled = true;
            txtPrecio2.Enabled = true;
            ddlUnidadCompra.Enabled = true;
            ddlUnidadManejo.Enabled = true;
        }

        public override void unirDatosClaseForma()
        {
            fuenteEnlace.DataSource = mGrupo;
            txtCodigoGrupo.DataBindings.Add("Text", fuenteEnlace, "GrupoID");
            txtNombre.DataBindings.Add("Text", fuenteEnlace, "Nombre");
            uchkGrupal.DataBindings.Add("Checked", fuenteEnlace, "IndComGru");
            txtCosto.DataBindings.Add("Value", fuenteEnlace, "Costo");
            txtPrecio1.DataBindings.Add("Value", fuenteEnlace, "Precio1");
            txtPrecio2.DataBindings.Add("Value", fuenteEnlace, "Precio2");
            ddlUnidadCompra.DataBindings.Add("Text", fuenteEnlace, "UnidadCompra");
            ddlUnidadManejo.DataBindings.Add("Text", fuenteEnlace, "UnidadManejo");
            if (base.Estado == estadoPantalla.Insertar)
            {
                limpiarControles();
            }
        }

        private bool verificarCodigo()
        {
            if (txtCodigoGrupo.Text.Length == 0)
            {
                epGrupo.SetError(txtCodigoGrupo, "Debe digitar un valor que no sea en blanco");
                return false;
            }
            else
            {
                epGrupo.SetError(txtCodigoGrupo, "");
                return true;
            }
        }

        private bool verificarNombre()
        {
            if (txtNombre.Text.Length == 0)
            {
                epGrupo.SetError(txtNombre, "Debe digitar un valor que no sea en blanco");
                return false;
            }
            else
            {
                epGrupo.SetError(txtNombre, "");
                return true;
            }
        }

        public override bool verificarDatos()
        {
            if (verificarCodigo() & verificarNombre())
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public override bool salvarCambios()
        {

            mGrupo.UsuarioCreacion = Usuario.NombreUsuario;
            mGrupo.UsuarioModificacion = Usuario.NombreUsuario;
            return mGrupo.insertarGrupo();

        }

        public override void actualizarCambios()
        {
            mGrupo.UsuarioModificacion = Usuario.NombreUsuario;
            mGrupo.actualizarGrupo();
        }

        public override void limpiarControles()
        {
            mGrupo.GrupoID = "";
            mGrupo.Nombre = "";
            mGrupo.Costo = 0;
            mGrupo.Precio1= 0;
            mGrupo.Precio2= 0;
            mGrupo.IndicadorComportamientoGrupo = "N";
            //Modificar indice de la lista, para iniciar los valores
            mGrupo.UnidadCompra = ddlUnidadCompra.Items[0].ToString();
            mGrupo.UnidadManejo = ddlUnidadManejo.Items[0].ToString();
            fuenteEnlace.ResetBindings(false);
        }

        public override void leerDatosAuditoria(out string pUsuaCrea, out string pFechCrea, out string pUsuaModi, out string pFechModi)
        {
            pUsuaCrea = mGrupo.UsuarioCreacion;
            pUsuaModi = mGrupo.UsuarioModificacion;
            pFechCrea = mGrupo.FechaCreacion;
            pFechModi = mGrupo.FechaModificacion;
        }

        public override bool hayDatosModificados()
        {
            return mGrupo.Modificada;
        }
        
        private void txtCosto_Enter(object sender, EventArgs e)
        {
            txtCosto.SelectAll();
        }

        private void txtPrecio1_Enter(object sender, EventArgs e)
        {
            txtPrecio1.SelectAll();
        }

        private void txtPrecio2_Enter(object sender, EventArgs e)
        {
            txtPrecio2.SelectAll();
        }

        private void txtNombre_Enter(object sender, EventArgs e)
        {
            txtNombre.SelectAll();
        }

        private void txtCodigoGrupo_Enter(object sender, EventArgs e)
        {
            txtCodigoGrupo.SelectAll();
        }

        private void txtNombre_Enter_1(object sender, EventArgs e)
        {
            txtNombre.SelectAll();
        }

        private void uchkGrupal_CheckedChanged(object sender, EventArgs e)
        {
            gbxValores.Enabled = uchkGrupal.Checked;
            gbxUnidades.Enabled = uchkGrupal.Checked;
            if (uchkGrupal.Checked)
            {
                //ddlUnidadCompra.SelectedIndex = 0;
                //ddlUnidadManejo.SelectedIndex = 0;
            }
        }

        private void ddlUnidadCompra_ValueChanged(object sender, EventArgs e)
        {
            try
            {
                mGrupo.UnidadCompra = ddlUnidadCompra.SelectedItem.ToString();
            }
            catch (NullReferenceException)
            { 
            }

        }

        private void ddlUnidadManejo_ValueChanged(object sender, EventArgs e)
        {
            try
            {
                mGrupo.UnidadManejo = ddlUnidadManejo.SelectedItem.ToString();
            }
            catch (NullReferenceException)
            {
            }

        }

    }
}

